#include <my_head.h>

typedef struct _Msg{
    long type;
    int id;         // 学号
    char name[16];  // 姓名
    short score;    // 成绩
}msg_t;

int main(int argc, const char *argv[]){
    // 获取key值
    key_t my_key = ftok("/home/linux", 'A');
    if(-1 == my_key)
        ERR_LOG("ftok error");
    // 创建或者获取消息队列
    int msqid = msgget(my_key, IPC_CREAT|0666);
    if(-1 == msqid)
        ERR_LOG("msgget error");
    // 在消息队列中读取消息 并 打印到终端
    msg_t msg;
    long type;
    while(1){
        printf("请输入要读取的消息的类型:");
        scanf("%ld", &type); // 输入想读消息的类型
        if(-1 == msgrcv(msqid, &msg, sizeof(msg)-sizeof(msg.type), type, 0))
            ERR_LOG("msgrcv");
        printf("收到消息 : [%ld %d %s %d]\n", msg.type, msg.id, msg.name, msg.score);
    }
    // 删除消息队列
    // if(-1 == msgctl(msqid, IPC_RMID, NULL))
    //     ERR_LOG("msgctl error");
    return 0;
}